In the context of a computer network such as the Internet, the bandwidth of a network path or a component of a path (e.g. a server, relay or router) may refer to either the bandwidth capacity or the available bandwidth of the path or component. The bandwidth capacity is the total data rate the path or component can handle, while the available bandwidth is the data rate which that path or component can currently offer (the bandwidth capacity minus any bandwidth incurred by existing communications over the path or through the component). Bandwidth may be expressed for example in terms of bits per second, or bytes per second.
Existing methods allow for the estimation of the bandwidth over a given network path, but only based on observations previously made on the exact same network path (comprising the exact same constituent components). For example, one can build a histogram of previously observed bandwidths. However these methods can only estimate the bandwidth of a path if there was a previous observation for that path. In fact, quite a few observations on the exact same network path are typically required in order to get a useful estimate. Often, no observations exist for the path in question, and thus the methods break down completely. Also, without visibility of individual constituent components of a path, these methods do not allow for estimating the bandwidth of the individual components of the path (e.g. individual servers, relays or routers).
More sophisticated methods exist for estimating jitter, round-trip time (RTT) and packet loss rather than bandwidth. However, it is not straight-forward to extend such methods to bandwidth, because of the unique property of bandwidth that the bandwidth of a path is equal to the bandwidth of the lowest bandwidth component on the path, i.e. the “bottleneck” (whereas for jitter, RTT and packet loss, these are determined by the cumulative effect of each component along the route).